
/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package itm.bo.proyectosInvestigacion;

//~--- non-JDK imports --------------------------------------------------------
import itm.conexion.SQLServerConection;

import itm.dao.proyectosInvestigacion.ProyectoInvestigacionDAO;

import itm.exception.DAOException;
import itm.exception.ProyectoInvestigacionDAOException;
import itm.exception.ProyectoInvestigacionException;
import itm.vo.convocatorias.ConvocatoriaVO;
import itm.vo.file.ArchivoVO;
import itm.vo.grupoInvestigacion.GrupoInvestigacionVO;
import itm.vo.grupoInvestigacion.RolVO;
import itm.vo.lineaInvestigacion.LineaInvestigacionVO;
import itm.vo.personas.PersonaVO;
import itm.vo.proyectosInvestigacion.ActividadProyectoVO;
import itm.vo.proyectosInvestigacion.AvanceActividadVO;
import itm.vo.proyectosInvestigacion.CriterioEstadoProyecto;
import itm.vo.proyectosInvestigacion.CriterioEvaluacionVO;
import itm.vo.proyectosInvestigacion.CriterioObservacionVO;
import itm.vo.proyectosInvestigacion.EvaluacionCalidadProyectoVO;
import itm.vo.proyectosInvestigacion.EvaluacionProyectoVO;
import itm.vo.proyectosInvestigacion.EvaluadorProyectoVO;
import itm.vo.proyectosInvestigacion.FasesVO;
import itm.vo.proyectosInvestigacion.FuenteFinanciacionVO;
import itm.vo.proyectosInvestigacion.ProyectoInvestigacionTO;
import itm.vo.proyectosInvestigacion.ProyectoInvestigacionVO;
import itm.vo.proyectosInvestigacion.TipoInvestigacionVO;

//~--- JDK imports ------------------------------------------------------------

import java.sql.Connection;

import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;

/**
 *
 * @author Administrador
 */
public class ProyectoInvestigacionBO {

    ProyectoInvestigacionDAO proyectoInvDAO = null;
    SQLServerConection conexion = new SQLServerConection();
    Connection dbConexion;

    public String asignarAval(ProyectoInvestigacionVO proyectoInvVO) throws Exception {
        String resultado = "";

        try {
            dbConexion = conexion.openConnection();
            proyectoInvDAO = new ProyectoInvestigacionDAO(dbConexion);
            resultado = proyectoInvDAO.asignarAval(proyectoInvVO);
        } catch (Exception ex) {
            ex.getStackTrace();
        } finally {
            conexion.closeConnection(dbConexion);
        }

        return resultado;
    }

    public String asignarEvaluador(EvaluadorProyectoVO evaluadorAsignadoVO) throws Exception {
        String resultado = "";

        try {
            dbConexion = conexion.openConnection();
            proyectoInvDAO = new ProyectoInvestigacionDAO(dbConexion);
            resultado = proyectoInvDAO.asignarEvaluador(evaluadorAsignadoVO);
        } catch (Exception ex) {
            ex.getStackTrace();
        } finally {
            conexion.closeConnection(dbConexion);
        }

        return resultado;
    }

    public List<ActividadProyectoVO> consultarActividadesProyecto(ProyectoInvestigacionVO proyectoVO) throws Exception {
        List<ActividadProyectoVO> listaActividadesProyecto = new ArrayList<ActividadProyectoVO>();

        try {
            dbConexion = conexion.openConnection();
            proyectoInvDAO = new ProyectoInvestigacionDAO(dbConexion);
            listaActividadesProyecto = proyectoInvDAO.consultarActividadesProyecto(proyectoVO);
        } catch (Exception ex) {
            ex.getStackTrace();
        } finally {
            conexion.closeConnection(dbConexion);
        }

        return listaActividadesProyecto;
    }

    public List<EvaluacionProyectoVO> consultarEvaluacionProyecto(ProyectoInvestigacionVO proyectoInvVO)
            throws Exception {
        List<EvaluacionProyectoVO> listaEvaluacion = new ArrayList<EvaluacionProyectoVO>();

        try {
            dbConexion = conexion.openConnection();
            proyectoInvDAO = new ProyectoInvestigacionDAO(dbConexion);
            listaEvaluacion = proyectoInvDAO.consultarEvaluacionProyecto(proyectoInvVO);
        } catch (Exception ex) {
            ex.getStackTrace();
        } finally {
            conexion.closeConnection(dbConexion);
        }

        return listaEvaluacion;
    }

    public List<EvaluacionProyectoVO> consultarItemEvaluacionProyecto(ProyectoInvestigacionVO proyectoInvVO)
            throws Exception {
        List<EvaluacionProyectoVO> listaItemEvaluacionProyecto = new ArrayList<EvaluacionProyectoVO>();

        try {
            dbConexion = conexion.openConnection();
            proyectoInvDAO = new ProyectoInvestigacionDAO(dbConexion);
            listaItemEvaluacionProyecto = proyectoInvDAO.consultarItemEvaluacionProyecto(proyectoInvVO);
        } catch (Exception ex) {
            ex.getStackTrace();
        } finally {
            conexion.closeConnection(dbConexion);
        }

        return listaItemEvaluacionProyecto;
    }

    public String evaluarCalidadProyecgto(EvaluacionCalidadProyectoVO evaluacionCalidadProyectoVO) throws Exception {
        String resultado = "";

        try {
            dbConexion = conexion.openConnection();
            proyectoInvDAO = new ProyectoInvestigacionDAO(dbConexion);
            resultado = proyectoInvDAO.evaluarCalidadProyecgto(evaluacionCalidadProyectoVO);
        } catch (Exception ex) {
            ex.getStackTrace();
        } finally {
            conexion.closeConnection(dbConexion);
        }

        return resultado;
    }

    public String evaluarItemProyecto(EvaluacionProyectoVO evaluacionProyectoVO) throws Exception {
        String resultado = "";

        try {
            dbConexion = conexion.openConnection();
            proyectoInvDAO = new ProyectoInvestigacionDAO(dbConexion);
            resultado = proyectoInvDAO.evaluarItemProyecto(evaluacionProyectoVO);
        } catch (Exception ex) {
            ex.getStackTrace();
        } finally {
            conexion.closeConnection(dbConexion);
        }

        return resultado;
    }

    public int adjuntarArchivoFinalizarCerrar(ArchivoVO archivoVO, String estado) throws Exception {
        int resultado = 0;

        try {
            dbConexion = conexion.openConnection();
            proyectoInvDAO = new ProyectoInvestigacionDAO(dbConexion);
            resultado = proyectoInvDAO.adjuntarArchivoFinalizarCerrar(archivoVO, estado);
        } catch (Exception ex) {
            ex.getStackTrace();
        } finally {
            conexion.closeConnection(dbConexion);
        }

        return resultado;
    }

    public int adjuntarArchivoProyecto(ArchivoVO archivoVO) throws Exception {
        int resultado = 0;

        try {
            dbConexion = conexion.openConnection();
            proyectoInvDAO = new ProyectoInvestigacionDAO(dbConexion);
            resultado = proyectoInvDAO.adjuntarArchivoProyecto(archivoVO);
        } catch (Exception ex) {
            ex.getStackTrace();
        } finally {
            conexion.closeConnection(dbConexion);
        }

        return resultado;
    }

    public int ingresarActividad(ActividadProyectoVO actividadVO) throws Exception {
        int idActividad = 0;

        try {
            dbConexion = conexion.openConnection();
            proyectoInvDAO = new ProyectoInvestigacionDAO(dbConexion);
            idActividad = proyectoInvDAO.ingresarActividad(actividadVO);
        } catch (Exception ex) {
            ex.getStackTrace();
        } finally {
            conexion.closeConnection(dbConexion);
        }

        return idActividad;
    }

    public int ingresarAvanceActividad(AvanceActividadVO avanceActividadVO) throws Exception {
        int idAvance = 0;

        try {
            dbConexion = conexion.openConnection();
            proyectoInvDAO = new ProyectoInvestigacionDAO(dbConexion);
            idAvance = proyectoInvDAO.ingresarAvanceActividad(avanceActividadVO);
        } catch (Exception ex) {
            ex.getStackTrace();
        } finally {
            conexion.closeConnection(dbConexion);
        }

        return idAvance;
    }

    public String insertarCriterioProyecto(CriterioObservacionVO criterioObservacionVO,
            ProyectoInvestigacionVO proyectoInvVO)
            throws Exception {
        String resultado = "";

        try {
            dbConexion = conexion.openConnection();
            proyectoInvDAO = new ProyectoInvestigacionDAO(dbConexion);
            resultado = proyectoInvDAO.insertarCriterioProyecto(criterioObservacionVO, proyectoInvVO);
        } catch (Exception ex) {
            ex.getStackTrace();
        } finally {
            conexion.closeConnection(dbConexion);
        }

        return resultado;
    }

    public int insertarFuenteFinanciacion(FuenteFinanciacionVO fuentesFinanVO) throws Exception {
        int idFuente = 0;

        try {
            dbConexion = conexion.openConnection();
            proyectoInvDAO = new ProyectoInvestigacionDAO(dbConexion);
            idFuente = proyectoInvDAO.insertarFuenteFinanciacion(fuentesFinanVO);
        } catch (Exception ex) {
            ex.getStackTrace();
        } finally {
            conexion.closeConnection(dbConexion);
        }

        return idFuente;
    }

    public String insertarGrupoProyecto(GrupoInvestigacionVO grupoInvVO, ProyectoInvestigacionVO proyectoInvVO)
            throws Exception {
        String resultado = "";

        try {
            dbConexion = conexion.openConnection();
            proyectoInvDAO = new ProyectoInvestigacionDAO(dbConexion);
            resultado = proyectoInvDAO.insertarGrupoProyecto(grupoInvVO, proyectoInvVO);
        } catch (Exception ex) {
            ex.getStackTrace();
        } finally {
            conexion.closeConnection(dbConexion);
        }

        return resultado;
    }

    public String insertarFuenteProyecto(FuenteFinanciacionVO fuenteFinanVO, ProyectoInvestigacionVO proyectoInvVO)
            throws Exception {
        String resultado = "";

        try {
            dbConexion = conexion.openConnection();
            proyectoInvDAO = new ProyectoInvestigacionDAO(dbConexion);
            resultado = proyectoInvDAO.insertarFuenteProyecto(fuenteFinanVO, proyectoInvVO);
        } catch (Exception ex) {
            ex.getStackTrace();
        } finally {
            conexion.closeConnection(dbConexion);
        }

        return resultado;
    }

    public String insertarPersonaProyecto(PersonaVO personaVO, ProyectoInvestigacionVO proyectoInvVO) throws Exception {
        String resultado = "";

        try {
            dbConexion = conexion.openConnection();
            proyectoInvDAO = new ProyectoInvestigacionDAO(dbConexion);
            resultado = proyectoInvDAO.insertarPersonaProyecto(personaVO, proyectoInvVO);
        } catch (Exception ex) {
            ex.getStackTrace();
        } finally {
            conexion.closeConnection(dbConexion);
        }

        return resultado;
    }

    public String existePersonasProyecto(PersonaVO personaVO, ProyectoInvestigacionVO proyectoInvVO) throws ProyectoInvestigacionException {
        try {
            dbConexion = conexion.openConnection();
            proyectoInvDAO = new ProyectoInvestigacionDAO(dbConexion);
            return proyectoInvDAO.existePersonasProyecto(personaVO, proyectoInvVO);
        } catch (ProyectoInvestigacionDAOException ex) {
            Logger.getLogger(ProyectoInvestigacionBO.class.getName()).log(Level.SEVERE, null, ex);
            ex.printStackTrace();
            throw new ProyectoInvestigacionException("Error: ProyectoInvestigacionBO:existePersonasProyecto", ex);
        } catch (SQLException ex) {
            Logger.getLogger(ProyectoInvestigacionBO.class.getName()).log(Level.SEVERE, null, ex);
            ex.printStackTrace();
            throw new ProyectoInvestigacionException("Error: ProyectoInvestigacionBO:existePersonasProyecto", ex);
        } finally {
            conexion.closeConnection(dbConexion);
        }
    }

    public List<ProyectoInvestigacionVO> consultarProyectos(ProyectoInvestigacionVO proyectoInvVO) throws Exception {
        List<ProyectoInvestigacionVO> listaproyectos = new ArrayList<ProyectoInvestigacionVO>();

        try {
            dbConexion = conexion.openConnection();
            proyectoInvDAO = new ProyectoInvestigacionDAO(dbConexion);
            listaproyectos = proyectoInvDAO.consultarProyectos(proyectoInvVO);
        } catch (Exception ex) {
            ex.getStackTrace();
        } finally {
            conexion.closeConnection(dbConexion);
        }

        return listaproyectos;
    }

    public String consultarEstadoProyecto(String idProyecto) throws Exception {
        String estado = "";

        try {
            dbConexion = conexion.openConnection();
            proyectoInvDAO = new ProyectoInvestigacionDAO(dbConexion);
            estado = proyectoInvDAO.consultarEstadoProyecto(idProyecto);
        } catch (Exception ex) {
            ex.getStackTrace();
        } finally {
            conexion.closeConnection(dbConexion);
        }

        return estado;
    }

    public List<PersonaVO> listaPersonasProyecto(ProyectoInvestigacionVO proyectoInvVO) throws Exception {
        List<PersonaVO> listaPersonas = new ArrayList<PersonaVO>();

        try {
            dbConexion = conexion.openConnection();
            proyectoInvDAO = new ProyectoInvestigacionDAO(dbConexion);
            listaPersonas = proyectoInvDAO.listaPersonasProyecto(proyectoInvVO);
        } catch (Exception ex) {
            ex.getStackTrace();
        } finally {
            conexion.closeConnection(dbConexion);
        }

        return listaPersonas;
    }

    public List<CriterioObservacionVO> listarCriteriosObservacion() throws Exception {
        List<CriterioObservacionVO> listaCriterios = new ArrayList<CriterioObservacionVO>();

        try {
            dbConexion = conexion.openConnection();
            proyectoInvDAO = new ProyectoInvestigacionDAO(dbConexion);
            listaCriterios = proyectoInvDAO.listarCriteriosObservacion();
        } catch (Exception ex) {
            ex.getStackTrace();
        } finally {
            conexion.closeConnection(dbConexion);
        }

        return listaCriterios;
    }

    public List<FasesVO> listarFases() throws Exception {
        List<FasesVO> listaFases = new ArrayList<FasesVO>();

        try {
            dbConexion = conexion.openConnection();
            proyectoInvDAO = new ProyectoInvestigacionDAO(dbConexion);
            listaFases = proyectoInvDAO.listarFases();
        } catch (Exception ex) {
            ex.getStackTrace();
        } finally {
            conexion.closeConnection(dbConexion);
        }

        return listaFases;
    }

    public List<FuenteFinanciacionVO> listarFuenteFinanciacion() throws Exception {
        List<FuenteFinanciacionVO> listaFuenteFinanciacion = new ArrayList<FuenteFinanciacionVO>();

        try {
            dbConexion = conexion.openConnection();
            proyectoInvDAO = new ProyectoInvestigacionDAO(dbConexion);
            listaFuenteFinanciacion = proyectoInvDAO.listarFuenteFinanciacion();
        } catch (Exception ex) {
            ex.getStackTrace();
        } finally {
            conexion.closeConnection(dbConexion);
        }

        return listaFuenteFinanciacion;
    }

    public List<FuenteFinanciacionVO> listarFuentesProyId(int idProy) throws Exception {
        List<FuenteFinanciacionVO> listaFuenteFinanciacion = new ArrayList<FuenteFinanciacionVO>();

        try {
            dbConexion = conexion.openConnection();
            proyectoInvDAO = new ProyectoInvestigacionDAO(dbConexion);
            listaFuenteFinanciacion = proyectoInvDAO.consultarFuenteFinanciacionProyectoInt(idProy);
        } catch (Exception ex) {
            ex.getStackTrace();
        } finally {
            conexion.closeConnection(dbConexion);
        }

        return listaFuenteFinanciacion;
    }

    public List<PersonaVO> listarPersonaByRol(RolVO rolVO) throws Exception {
        List<PersonaVO> listaCoInvestigadores = new ArrayList<PersonaVO>();

        try {
            dbConexion = conexion.openConnection();
            proyectoInvDAO = new ProyectoInvestigacionDAO(dbConexion);
            listaCoInvestigadores = proyectoInvDAO.listarPersonaByRol(rolVO);
        } catch (Exception ex) {
            ex.getStackTrace();
        } finally {
            conexion.closeConnection(dbConexion);
        }

        return listaCoInvestigadores;
    }

    public List<TipoInvestigacionVO> listarTipoInvestigacion() throws Exception {
        List<TipoInvestigacionVO> listaTipoInvestigacion = new ArrayList<TipoInvestigacionVO>();

        try {
            dbConexion = conexion.openConnection();
            proyectoInvDAO = new ProyectoInvestigacionDAO(dbConexion);
            listaTipoInvestigacion = proyectoInvDAO.listarTipoInvestigacion();
        } catch (Exception ex) {
            ex.getStackTrace();
        } finally {
            conexion.closeConnection(dbConexion);
        }

        return listaTipoInvestigacion;
    }

    public ProyectoInvestigacionTO consultarProyectoById(ProyectoInvestigacionVO proyectoInvVO) throws Exception {
        ProyectoInvestigacionTO proyectoInvTO = new ProyectoInvestigacionTO();
        ProyectoInvestigacionVO proyecto = new ProyectoInvestigacionVO();
        CriterioEstadoProyecto estadoProyecto = new CriterioEstadoProyecto();
        PersonaVO investigadorPrincipal = new PersonaVO();
        List<PersonaVO> investigadores = new ArrayList<PersonaVO>();
        List<PersonaVO> coInvestigadores = new ArrayList<PersonaVO>();
        List<PersonaVO> tecnicosLaboratorio = new ArrayList<PersonaVO>();
        List<PersonaVO> estudiantes = new ArrayList<PersonaVO>();
        List<FuenteFinanciacionVO> fuentesFinanciacion = new ArrayList<FuenteFinanciacionVO>();
        List<GrupoInvestigacionVO> gruposInvestigacion = new ArrayList<GrupoInvestigacionVO>();
        LineaInvestigacionVO lineaInvestigacion = new LineaInvestigacionVO();
        TipoInvestigacionVO tipoProyecto = new TipoInvestigacionVO();
        List<ArchivoVO> archivosProyecto = new ArrayList<ArchivoVO>();
        List<EvaluacionProyectoVO> listaEvaluacion = new ArrayList<EvaluacionProyectoVO>();
        List<CriterioEvaluacionVO> listaCriterios = new ArrayList<CriterioEvaluacionVO>();
        String nombreRol = "";

        try {
            dbConexion = conexion.openConnection();
            proyectoInvDAO = new ProyectoInvestigacionDAO(dbConexion);
            proyecto = proyectoInvDAO.consultarProyectoById(proyectoInvVO);
            proyectoInvTO.setProyectoInvVO(proyecto);

            String id = Long.toString(proyectoInvVO.getIdProyecto());

            estadoProyecto.setEstado(proyectoInvDAO.consultarEstadoProyecto(id));
            proyectoInvTO.setEstadoProyecto(estadoProyecto);
            gruposInvestigacion = proyectoInvDAO.consultarGruposProyecto(proyectoInvVO);
            proyectoInvTO.setGruposInvestigacion(gruposInvestigacion);
            tipoProyecto = proyectoInvDAO.consultarTipoProyecto(proyectoInvVO);
            proyectoInvTO.setTipoProyecto(tipoProyecto);
            lineaInvestigacion = proyectoInvDAO.consultarLineaProyecto(proyectoInvVO);
            proyectoInvTO.setLineaInvestigacion(lineaInvestigacion);
            fuentesFinanciacion = proyectoInvDAO.consultarFuenteFinanciacionProyecto(proyectoInvVO);
            proyectoInvTO.setFuentesFinanciacion(fuentesFinanciacion);
            nombreRol = "INVESTIGADOR";
            investigadores = proyectoInvDAO.consultarPersonasRolProyecto(proyectoInvVO, nombreRol);
            investigadorPrincipal = investigadores.get(0);
            proyectoInvTO.setInvestigadorPrincipal(investigadorPrincipal);
            nombreRol = "COINVESTIGADOR";
            coInvestigadores = proyectoInvDAO.consultarPersonasRolProyecto(proyectoInvVO, nombreRol);
            proyectoInvTO.setCoInvestigadores(coInvestigadores);
            nombreRol = "TECNICOLAB";
            tecnicosLaboratorio = proyectoInvDAO.consultarPersonasRolProyecto(proyectoInvVO, nombreRol);
            proyectoInvTO.setTecnicosLaboratorio(tecnicosLaboratorio);
            nombreRol = "ESTUDIANTE";
            estudiantes = proyectoInvDAO.consultarPersonasRolProyecto(proyectoInvVO, nombreRol);
            proyectoInvTO.setEstudiantes(estudiantes);
            archivosProyecto = proyectoInvDAO.consultarArchivosProyecto(proyectoInvVO);
            proyectoInvTO.setArchivosProyecto(archivosProyecto);
            listaEvaluacion = proyectoInvDAO.consultarEvaluacionProyecto(proyectoInvVO);
            proyectoInvTO.setListaEvaluacion(listaEvaluacion);
            listaCriterios = proyectoInvDAO.consultarCriterioEvaluacionProyecto(proyectoInvVO);

            float valEv = 0,
                    prom = 0,
                    idCriterio = 0;

            for (int i = 0; i < listaCriterios.size(); i++) {
                idCriterio = listaCriterios.get(i).getIdCriterio();

                float temp = 0,
                        sum = 0;

                for (int j = 0; j < listaEvaluacion.size(); j++) {
                    if (idCriterio == listaEvaluacion.get(j).getIdCriterio()) {
                        valEv = listaEvaluacion.get(j).getIdEscala();
                        sum = sum + valEv;
                        temp++;
                    }
                }

                prom = sum / temp;
                listaCriterios.get(i).setPromedioCriterio(prom);
            }

            proyectoInvTO.setListaCriterio(listaCriterios);

        // proyectoInvDAO.consultarEstadoProyecto(idProyecto);
        } catch (Exception ex) {
            ex.getStackTrace();
        } finally {
            conexion.closeConnection(dbConexion);
        }

        return proyectoInvTO;
    }

    public int matricularContinuaProyecto(ProyectoInvestigacionVO proyectoInvVO) throws Exception {
        int idProyecto = 0;

        try {
            dbConexion = conexion.openConnection();
            proyectoInvDAO = new ProyectoInvestigacionDAO(dbConexion);
            idProyecto = proyectoInvDAO.matricularContinuaProyecto(proyectoInvVO);
        } catch (Exception ex) {
            ex.getStackTrace();
        } finally {
            conexion.closeConnection(dbConexion);
        }

        return idProyecto;
    }

    public int matricularProyecto(ProyectoInvestigacionVO proyectoInvVO, ConvocatoriaVO convocatoriaVO)
            throws Exception {
        int idProyecto = 0,
                idMaximo = 0,
                idTemporal = 0;

        try {
            dbConexion = conexion.openConnection();
            proyectoInvDAO = new ProyectoInvestigacionDAO(dbConexion);
            idMaximo = proyectoInvDAO.consultarMaxIdProyecto();
            idTemporal = generarId(idMaximo);
            proyectoInvVO.setIdProyecto(idTemporal);
            idProyecto = proyectoInvDAO.matricularProyecto(proyectoInvVO, convocatoriaVO);
        } catch (Exception ex) {
            ex.getStackTrace();
        } finally {
            conexion.closeConnection(dbConexion);
        }

        return idProyecto;
    }

    private static int generarId(int maxId) {
        Calendar c1 = Calendar.getInstance();
        int id = 0,
                idProyecto = 0,
                temp = 0, cifra;
        String conMax = "",
                maxAnnio = "",
                maximoId = "",
                annio = Integer.toString(c1.get(Calendar.YEAR));

        conMax = String.valueOf(maxId);

        if (conMax.length() >= 7) {
            maxAnnio = conMax.substring(0, 4);
            maximoId = conMax.substring(4, 7);
            id = Integer.parseInt(maximoId);
        }

        cifra = id;

        while (cifra > 0) {
            cifra = cifra / 10;
            temp++;
        }

        if (maxAnnio.equals(annio)) {
            if (temp == 1) {
                id = id + 1;

                if (id == 10) {
                    String idP = String.valueOf(id);

                    idProyecto = Integer.parseInt(annio + "0" + idP);
                } else {
                    String idP = String.valueOf(id);

                    idProyecto = Integer.parseInt(annio + "00" + idP);
                }
            }

            if (temp == 2) {
                id = id + 1;

                if (id == 100) {
                    String idP = String.valueOf(id);

                    idProyecto = Integer.parseInt(annio + idP);
                } else {
                    String idP = String.valueOf(id);

                    idProyecto = Integer.parseInt(annio + "0" + idP);
                }
            }

            if (temp == 3) {
                id = id + 1;

                String idP = String.valueOf(id);

                idProyecto = Integer.parseInt(annio + idP);
            }
        } else {
            String idP = String.valueOf(id);

            idProyecto = Integer.parseInt(annio + "001");
        }

        return idProyecto;
    }

    public String modificarEstadoProyecto(CriterioEstadoProyecto estadoProyectoVO) throws Exception {
        String resultado = "";

        try {
            dbConexion = conexion.openConnection();
            proyectoInvDAO = new ProyectoInvestigacionDAO(dbConexion);
            resultado = proyectoInvDAO.modificarEstadoProyecto(estadoProyectoVO);
        } catch (Exception ex) {
            ex.getStackTrace();
        } finally {
            conexion.closeConnection(dbConexion);
        }

        return resultado;
    }

    public String rechazarProyecto(CriterioEstadoProyecto estadoProyectoVO) throws Exception {
        String resultado = "";

        try {
            dbConexion = conexion.openConnection();
            proyectoInvDAO = new ProyectoInvestigacionDAO(dbConexion);
            resultado = proyectoInvDAO.rechazarProyecto(estadoProyectoVO);
        } catch (Exception ex) {
            ex.getStackTrace();
        } finally {
            conexion.closeConnection(dbConexion);
        }

        return resultado;
    }

    public String solicitarAval(ProyectoInvestigacionVO proyectoInvVO) throws Exception {
        String resultado = "";

        try {
            dbConexion = conexion.openConnection();
            proyectoInvDAO = new ProyectoInvestigacionDAO(dbConexion);
            resultado = proyectoInvDAO.solicitarAval(proyectoInvVO);
        } catch (Exception ex) {
            ex.getStackTrace();
        } finally {
            conexion.closeConnection(dbConexion);
        }

        return resultado;
    }

    public int obtenerTiempoProyecto(long idProy) throws ProyectoInvestigacionException{
        try {
            
            dbConexion = conexion.openConnection();
            proyectoInvDAO = new ProyectoInvestigacionDAO(dbConexion);
            return proyectoInvDAO.obtenerTiempoProyecto(idProy);
        } catch (SQLException ex) {
            Logger.getLogger(ProyectoInvestigacionBO.class.getName()).log(Level.SEVERE, null, ex);
            throw new ProyectoInvestigacionException("Error: ProyectoInvestigacionBO:obtenerTiempoProyecto", ex);
        } catch (DAOException ex) {
            Logger.getLogger(ProyectoInvestigacionBO.class.getName()).log(Level.SEVERE, null, ex);
            throw new ProyectoInvestigacionException("Error: ProyectoInvestigacionBO:obtenerTiempoProyecto", ex);
        }
    }


}
